This invention relates to the field of supporting multiple interface versions, and more particularly, to supporting multiple versions of an interface where the interface involves side effects in addition to the main purpose to the interface.
Distributed computer systems have become more widespread as computer networks have developed. Distributed computer systems comprise multiple computer systems connected by one or more networks such that the resources of the computer systems can be shared. Processes instructed by a local computer system can be executed on a remote computer system. The connecting networks can include Local Area Networks (LANs), Wide Area Networks (WANs) and global networks such as the Internet.
One form of distributed architecture in which multiple computer processes may cooperatively perform tasks is under a “client-server” relationship. In such a relationship, a “client” or calling computer process issues or sends a request for a remote procedure to a “server” or receiving computer process that executes the procedure. It will be appreciated that whilst one computer process may function as a client which issues a procedure request and another may function as a server when it executes the procedure, any computer process may function as both a client and a server in different capacities. The terms “client” and “server” may also be applied to peer systems.
Requests are passed between application programs running on the client and server computer systems by communication described by the application programming interface (API). As new functionality is implemented in computer processes and environments, remote procedure APIs often may be enhanced to support the new functionality. As is common practice with computer applications, enhancements to an API are embodied in a new version of the API.
To support a new version of an API, both the client and the server utilizing the API must support the new version. However, in many distributed computer systems it is impossible or impractical to upgrade all clients and servers at the same time to a new version of a remote procedure API. This is particularly true in shared or public networks. Consequently, multiple versions of an API may exist in a distributed computer system.
In existing systems, multiple API versions are handled by allowing servers to support multiple versions, with clients usually supporting only single versions of an API. Clients can access both old and new versions simultaneously for as long as the clients may need to access the old versions.
The development of the Internet has resulted in the use of open or shared computing in which applications are freely and dynamically available to users via the Internet. Such systems result in loss of control and influence over the version of APIs used. Recent trends in the Internet are towards the use of Web Services whereby standard functions, associated with a particular industry or infrastructure requirement, are established by a consortium of companies and thus represent a standard interface. These include:
1. Mapping one version of an API call to another. For example, mapping a version 2 call to a corresponding version 3 call.
2. Re-implementing the older API version(s) to incorporate any new requirements introduced with the newest version.